﻿namespace RecruitmentAgency.Models.DataTypes
{
    /// <summary>
    /// The RecruitmentAgency.Models.Cv.DataTypes.PersonalDetail contains personal details that belong to the user whose ID number is specified with the PersonId property
    /// </summary>
    public class PersonalDetail
    {
        /// <summary>
        /// Gets or sets the ID number of the user that the personal details relate to
        /// </summary>
        public int PersonId { get; set; }

        /// <summary>
        /// Gets or sets the user name of the personal details
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// Gets or sets the title of the personal details
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// Gets or sets the first name of the personal details
        /// </summary>
        public string FirstName { get; set; }

        /// <summary>
        /// Gets or sets the middle names of the personal details
        /// </summary>
        public string MiddleNames { get; set; }

        /// <summary>
        /// Gets or sets the last name of the personal details
        /// </summary>
        public string LastName { get; set; }

        /// <summary>
        /// Gets or sets the sex of the personal details
        /// </summary>
        public Sex Sex { get; set; }

        /// <summary>
        /// Gets or sets the date of birth of the personal details
        /// </summary>
        public string DateOfBirth { get; set; }

        /// <summary>
        /// Gets or sets the home phone number of the personal details
        /// </summary>
        public string HomePhone { get; set; }

        /// <summary>
        /// Gets or sets the mobile phone number of the personal details
        /// </summary>
        public string MobilePhone { get; set; }

        /// <summary>
        /// Gets or sets the personal e-mail address of the personal details
        /// </summary>
        public string Email1 { get; set; }

        /// <summary>
        /// Gets or sets the work e-mail address of the personal details
        /// </summary>
        public string Email2 { get; set; }

        /// <summary>
        /// Gets or sets the contact preference of the personal details
        /// </summary>
        public string ContactPreference { get; set; }

        /// <summary>
        /// Gets or sets the first line of the address of the personal details
        /// </summary>
        public string AddressLine1 { get; set; }

        /// <summary>
        /// Gets or sets the second line of the address of the personal details
        /// </summary>
        public string AddressLine2 { get; set; }

        /// <summary>
        /// Gets or sets the town of the personal details
        /// </summary>
        public string Town { get; set; }

        /// <summary>
        /// Gets or sets the post code of the personal details
        /// </summary>
        public string PostCode { get; set; }

        /// <summary>
        /// Gets or sets the website URL of the personal details
        /// </summary>
        public string WebsiteUrl { get; set; }

        /// <summary>
        /// Gets or sets the URL of the stored photo image of the personal details
        /// </summary>
        public string PhotoUrl { get; set; }

        /// <summary>
        /// Gets or sets the type of authority to work of the personal details
        /// </summary>
        public string AuthorityToWork { get; set; }

        /// <summary>
        /// Gets or sets the job sector preference of the personal details
        /// </summary>
        public string JobSectorPreference { get; set; }

        /// <summary>
        /// Gets or sets the number of penalty points of the personal details
        /// </summary>
        public int PenaltyPoints { get; set; }

        /// <summary>
        /// Gets or sets the ID number of the role of the personal details
        /// </summary>
        public int RoleId { get; set; }

        /// <summary>
        /// Gets or sets a Boolean value that determines whether the authority to work of the personal details has been verified
        /// </summary>
        public bool PersonalDetailVerified { get; set; }

        /// <summary>
        /// Gets or sets the type of verification received for the personal details
        /// </summary>
        public string PersonalDetailVerificationType { get; set; }

        /// <summary>
        /// Gets or sets the number items that need verification in the personal details
        /// </summary>
        public int NotVerifiedCount { get; set; }

        /// <summary>
        /// Gets a Boolean value that determines whether the RecruitmentAgency.Models.Cv.DataTypes.PersonalDetail is to be considered to be null
        /// </summary>
        public bool IsNull
        {
            get
            {
                return Title == null && FirstName == null && LastName == null && DateOfBirth == null && HomePhone == null && MobilePhone == null && Email1 == null && Email2 == null && ContactPreference == null && AddressLine1 == null && Town == null && PostCode == null;
            }
        }
    }
}